%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcul de l'interpolation de la fonction sur la poutre
%   entrée:
%       - valeurs aux noeuds: Uh
%       donnees:
%       - maillage
%       - nombre de point par élément : nInt
%   sortie:
%       - valeurs interpolées: uhInt
%       - maillageInt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function [uhInt,maillageInt] = Fonction_interpolee (donnees)

maillageInt = zeros(1,(length(donnees.maillage)-1)*(donnees.nInt)+1);
uhInt = zeros(1,length(maillageInt));

for i=1:(length(donnees.maillage)-1)
    
    pas = (donnees.maillage(i+1)-donnees.maillage(i))/donnees.nInt;
    
    maillageTemp = [donnees.maillage(i):pas:donnees.maillage(i+1)];
    maillageInt((i-1)*donnees.nInt+1:(i)*donnees.nInt+1) = maillageTemp;
    
    uhInt((i-1)*donnees.nInt+1) = donnees.res.Uh(2*i-1);
    uhInt((i)*donnees.nInt+1) = donnees.res.Uh(2*i+1);
    
    for j=1:(donnees.nInt-1)
        
        u = Valeur_interpolee(donnees.res.Uh(2*i-1:2*i+2),j/donnees.nInt,(donnees.maillage(i+1)-donnees.maillage(i)));
        uhInt((i-1)*donnees.nInt+1+j) = u(1);
        
    end
    
end